lib/deploy: When deleting staged deployment, delete any lock
authorJonathan Lebon <jonathan@jlebon.com>
Fri, 21 Jan 2022 16:28:25 +0000 (11:28 -0500)
committerJonathan Lebon <jonathan@jlebon.com>
Fri, 21 Jan 2022 16:30:23 +0000 (11:30 -0500)
Otherwise, any future staged deployment will also automatically be
locked even if not requested. Likely we should fold the locking into the
primary `staged-deployment` serialized GVariant instead.

src/libostree/ostree-sysroot-deploy.c

index 726379d63bec844bab1a9172f44de071137231ed..d3f277a7adeeabeeef8967e28e992280ee5b72b6 100644 (file)
@@ -2493,6 +2493,10 @@ ostree_sysroot_write_deployments_with_options (OstreeSysroot     *self,
       if (!_ostree_sysroot_rmrf_deployment (self, self->staged_deployment, cancellable, error))
         return FALSE;
 
+      /* Delete the lock if there was any. */
+      if (!ot_ensure_unlinked_at (AT_FDCWD, _OSTREE_SYSROOT_RUNSTATE_STAGED_LOCKED, error))
+        return FALSE;
+
       /* Clear it out of the *current* deployments list to maintain invariants */
       self->staged_deployment = NULL;
       g_ptr_array_remove_index (self->deployments, 0);